// 进入项目目录 npm i express -S 安装
// 获取mysql
const mysql = require("mysql");
// 创建连接
const conn = mysql.createConnection({
	host:"localhost",
	user:"root",	 
	password:"",
	database:"feed"
})
// 连接数据库
conn.connect(function(err){
	if(!err){
		console.log("数据库连接成功")
	}else{
		console.log(err);
	}
})
// 导入express
const express = require('express');
// 实例app应用程序
const app = express();
// 定义静态目录
app.use(express.static('./public'))
// 使用json中间件
app.use(express.json());
// 跨域中间件
const cors = require("cors");
app.use(cors());
/* 定义路由（规定用户访问什么地址，返回什么内容） */
app.get("/",function(req,res){
	res.send("<h1>你好express</h1>")
})
app.get("/about",function(req,res){
	res.send("<h1>你好关于我们</h1>")
})


// 启动服务器
app.listen(8888,function(){
	console.log("localhost:8888 服务器启动")
})

// restFul 每个url都是一个资源 可以通过get请求资源 post新增资源 delete删除资源 put修改资源
// restFul 使用一种api的设计风格
// 删除留言的接口
app.delete("/api/feed/:id",function(req,res){
	var id = req.params.id;
	var sql = `delete from feedback where id=${id}`;
	conn.query(sql,function(err,data){
		if(!err){
			res.json({code:0,msg:"删除成功",data})
		}else{
			res.json({code:1,msg:"数据库错误",err})
		}
	})
})
// 修改路由接口
app.put("/api/feed/:id",function(req,res){
	var id = req.params.id;//要修改的id
	var name = req.body.name;//新的名称
	var msg = req.body.msg;//新的留言内容
	var sql = `update feedback set name='${name}',msg='${msg}' where id = ${id}`;
	conn.query(sql,function(err,data){
		if(!err){
			res.json({code:0,msg:"修改成功",data})
		}else{
			res.json({code:1,msg:"数据库错误",err})
		}
	})
})

// 定义发布留言的接口
app.post("/api/feed",function(req,res){
	// req.body 获取前端发送过来的post参数
	var name = req.body.name;
	var msg = req.body.msg;
	// 定义sql
	var sql = `insert into feedback (name,msg) values("${name}","${msg}")`;
	// 执行sql
	conn.query(sql,function(err,result){
		if(!err){
			// 成功返回成功数据
			res.json({code:0,msg:"添加成功",data:result})
		}else{
			// 失败了返回错误
			res.json({code:1,msg:"添加失败，数据库错误",err})
		}
	})
	
})
// 定义获取留言的接口
app.get("/api/feed",function(req,res){
	// 定义默认的分页信息
	// req.query查询信息 req.query.current当前页信息
	var pager = {
		current:req.query.current||1, //当前页
		totalPage:3,//总页数
		total:6,//总数据
		pageSize:req.query.pageSize||2, //分页大小
	}
	var sqla = "select count(*) as total from feedback where 1";
	// 查询计算所有的数据 给别名叫total
	// 返回给前端的数据
	conn.query(sqla,function(err,resultA){
		if(!err){
			// 数据数
			pager.total = resultA[0].total; //数据库取回来
			// 总页数
			pager.totalPage = Math.ceil(pager.total/pager.pageSize);	//总页数 = 总数据/分页大小		
			// 请求数据sql
			var sqlb = `select * from feedback where 1 order by id desc limit ${(pager.current-1)*pager.pageSize},${pager.pageSize}`;
			// 执行sql
			conn.query(sqlb,function(err2,resultB){
				if(!err2){
					// 没有错误方法data数据，pager信息
					res.json({code:0,msg:"请求成功",pager,data:resultB})
				}else{
					// 数据库错误
					res.json({code:1,msg:"数据库错误",err2})
				}
			})
		}else{
			// 数据库错误
			res.json({code:1,msg:"数据库错误",err})
		}
	
	})
	
})
